// 4. 【接⼝】与【抽象类】的区别：
/*
    抽象类：
    1. 可以有普通⽅法，也可以有抽象⽅法；
    2. 使⽤ extends 关键字去继承抽象类；
    接⼝中：
    1. 只能有抽象⽅法；
    2. 使⽤ implements 关键字去实现接⼝
 */
// 抽象类举例：
// 抽象类 —— Person

abstract class Person {
    // 属性
    name:string
    age:number
    // 构造器
    constructor(name:string,age:number){
        this.name = name
        this.age = age
    }
    // 抽象⽅法
    abstract speak():void
    // 普通⽅法
    walk(){
        console.log('我在⾏⾛中....')
    }
}

// Teacher类继承抽象类Person
class Teacher extends Person{
    constructor(name:string,age:number) {
        super(name,age)
    }

    speak(): void {
        console.log(`我是⽼师，我的名字是${this.name}`)
    }
}